package com.nl.utils.aggfunctions;

import org.apache.flink.api.common.functions.AggregateFunction;

/**
 * @author shihb
 * @date 2019/12/23 13:31
 * 自定义预聚合函数
 * 实现来一条数据加一
 * AggregateFunction<IN,ACC,OUT>
 * IN:输入的数据类型
 * ACC:中间的聚合状态的数据类型
 * OUT:输出的数据类型,也是后面的聚合结果输出函数的输入
 */

public class CountAgg<IN> implements AggregateFunction<IN,Long,Long> {

  @Override
  public Long createAccumulator() {
    // 初始化累加器
    return 0L;
  }

  @Override
  public Long add(IN t, Long acc) {
    // 来个值就加一,无需处理输入的数据信息
    return acc+1;
  }

  @Override
  public Long getResult(Long acc) {
    // 返回输出结果
    return acc;
  }

  @Override
  public Long merge(Long acc, Long acc1) {
    // 两个累加器怎么处理
    return acc+acc1;
  }
}
